🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by A.APPLEYARD Wed, 19 Aug 1992 09:57
Gnu C++ bugs in classes
#962
Author: A.APPLEYARD
Date: Wed, 19 Aug 1992 09:57
128 lines
3888 bytes
BUG REPORT:
Gnu C version 2.0 compiled etc and linked this program OK (as 'gcc t$$$.cc'):-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class scubadiver_catcher{public:
int i,j,k,l;
void call_into_action(char*s){j=strlen(s);};
void scubadiver_catcher::radio_for(char*s){k=strlen(s);};};
scubadiver_catcher Aphanistor;
main(){
Aphanistor.call_into_action("5 seen at Long Cove");
Aphanistor.radio_for("12 in 2 boats offshore from Black Rock Head");}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
But if I compiled it in 2 parts, as 'gcc t$$$1.cc t$$$2.cc':-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<file t$$$1.cc>>
class scubadiver_catcher{public:
int i,j,k,l;
void call_into_action(char*s){j=strlen(s);};
void scubadiver_catcher::radio_for(char*s){k=strlen(s);};};
void dummy(){}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<file t$$$2.cc>>
class scubadiver_catcher{public:
int i,j,k,l;
void call_into_action(char*s);
void scubadiver_catcher::radio_for(char*s);};
scubadiver_catcher Aphanistor;
main(){
Aphanistor.call_into_action("5 seen at Long Cove");
Aphanistor.radio_for("12 in 2 boats offshore from Black Rock Head");}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
the linker said this:-
t$$$2.o: Undefined symbol scubadiver_catcher::call_into_action(char *) reference
d from text symbol
Note that '_call_into_action__18scubadiver_catcherPc:' is not declared as global
in assembler file t$$$1.s as produced bu Gnu C++ version 2.0 .
This bug was not present in the last version of Gnu C which I had (1.39?).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Here is the result of 'gcc t$$$1.cc t$$$2.cc -S':-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<file t$$$1.s>>
	.file	"t$$$1.cc"
gcc2_compiled.:
.text
	.align 2
_call_into_action__18scubadiver_catcherPc:
	pushl %ebp
	movl %esp,%ebp
	pushl %ebx
	movl 8(%ebp),%ebx
	pushl 12(%ebp)
	call _strlen
	movl %eax,4(%ebx)
	addl $4,%esp
	jmp L2
	.align 2,0x90
	jmp L1
	.align 2,0x90
L2:
L1:
	movl -4(%ebp),%ebx
	leave
	ret
	.align 2
.globl _radio_for__18scubadiver_catcherPc
_radio_for__18scubadiver_catcherPc:
	pushl %ebp
	movl %esp,%ebp
	pushl %ebx
	movl 8(%ebp),%ebx
	pushl 12(%ebp)
	call _strlen
	movl %eax,8(%ebx)
	addl $4,%esp
	jmp L4
	.align 2,0x90
	jmp L3
	.align 2,0x90
L4:
L3:
	movl -4(%ebp),%ebx
	leave
	ret
	.align 2
.globl _dummy__Fv
_dummy__Fv:
	pushl %ebp
	movl %esp,%ebp
	jmp L6
	.align 2,0x90
	jmp L5
	.align 2,0x90
L6:
L5:
	leave
	ret
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<<file t$$$2.s>>
	.file	"t$$$2.cc"
gcc2_compiled.:
.text
LC0:
	.ascii "5 seen at Long Cove\0"
LC1:
	.ascii "12 in 2 boats offshore from Black Rock Head\0"
	.align 2
.globl _main
_main:
	pushl %ebp
	movl %esp,%ebp
	call ___main
	pushl $LC0
	pushl $_Aphanistor
	call _call_into_action__18scubadiver_catcherPc
	pushl $LC1
	pushl $_Aphanistor
	call _radio_for__18scubadiver_catcherPc
	addl $16,%esp
	xorl %eax,%eax
	jmp L1
	.align 2,0x90
	jmp L1
	.align 2,0x90
L1:
	leave
	ret
.comm _Aphanistor,16
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads