Thread View: gnu.utils.bug
1 messages
1 total messages
Started by Glenn Engel
Wed, 29 Mar 1989 18:14
-Tdata command not properly handled by gcc/ld
Author: Glenn Engel
Date: Wed, 29 Mar 1989 18:14
Date: Wed, 29 Mar 1989 18:14
131 lines
4400 bytes
4400 bytes
System: hp9000/350
gcc : 1.34 using gnu a.out
ld : December 88
When using the new -Tdata option with gcc, gcc splits up the option
when it get's passed on to ld:
gcc -v -Tdata c00000 test.c
gcc version 1.34
/usr/local/lib/gcc-cpp -v -undef -D__GNUC__ -Dhp9000s200 -Dhp9000s300 -DPWB -Dm
c68k -Dhpux -Dunix -D__hp9000s200__ -D__hp9000s300__ -D__PWB__ -D__mc68k__ -D__h
pux__ -D__unix__ -D__HAVE_68881__ -Dmc68020 test.c /tmp/cca28029.cpp
GNU CPP version 1.34
/usr/local/lib/gcc-cc1 /tmp/cca28029.cpp -quiet -dumpbase test.c -version -o /t
mp/cca28029.s
GNU C version 1.34 (68k, MIT syntax) compiled by GNU C version 1.34.
/usr/local/lib/gcc-as -mc68020 /tmp/cca28029.s -o test.o
/usr/local/lib/gcc-ld -Tdata /usr/local/lib/gnu/crt0.o c00000 test.o /usr/local
/lib/gcc-gnulib -lc
ld: invalid argument to -Tdata
Notice that crt0.o got put between -Tdata and c00000. If I try combining
the options together I get this result:
gcc -v -Tdatac00000 test.c
gcc version 1.34
/usr/local/lib/gcc-cpp -v -undef -D__GNUC__ -Dhp9000s200 -Dhp9000s300 -DPWB -Dm
c68k -Dhpux -Dunix -D__hp9000s200__ -D__hp9000s300__ -D__PWB__ -D__mc68k__ -D__h
pux__ -D__unix__ -D__HAVE_68881__ -Dmc68020 test.c /tmp/cca28064.cpp
GNU CPP version 1.34
/usr/local/lib/gcc-cc1 /tmp/cca28064.cpp -quiet -dumpbase test.c -version -o /t
mp/cca28064.s
GNU C version 1.34 (68k, MIT syntax) compiled by GNU C version 1.34.
/usr/local/lib/gcc-as -mc68020 /tmp/cca28064.s -o test.o
/usr/local/lib/gcc-ld -Tdatac00000 /usr/local/lib/gnu/crt0.o test.o /usr/local/
lib/gcc-gnulib -lc
ld: -T argument not multiple of page size, with sharable output
I have fixed my version of ld.c to make it accept the -Tdatac00000 syntax.
Patches follow.
Thanks,
--
| Glenn R. Engel
| Hewlett-Packard
| (206) 335-2066
| glenne%hplsla@hplabs.hp.com
*** ld.c.orig Wed Mar 29 09:09:09 1989
--- ld.c Wed Mar 29 09:26:29 1989
***************
*** 1128,1134
decode_option (swt, arg)
register char *swt, *arg;
{
! if (! strcmp (swt + 1, "Ttext"))
{
text_start = parse (arg, "%x", "invalid argument to -Ttext");
T_flag_specified = 1;
--- 1128,1134 -----
decode_option (swt, arg)
register char *swt, *arg;
{
! if (! strncmp (swt + 1, "Ttext", 5))
{
if (swt[6] == 0)
text_start = parse (arg, "%x", "invalid argument to -Ttext");
***************
*** 1130,1136
{
if (! strcmp (swt + 1, "Ttext"))
{
! text_start = parse (arg, "%x", "invalid argument to -Ttext");
T_flag_specified = 1;
return;
}
--- 1130,1140 -----
{
if (! strncmp (swt + 1, "Ttext", 5))
{
! if (swt[6] == 0)
! text_start = parse (arg, "%x", "invalid argument to -Ttext");
! else
! text_start = parse (swt+6, "%x", "invalid argument to -Ttext");
!
T_flag_specified = 1;
return;
}
***************
*** 1134,1140
T_flag_specified = 1;
return;
}
! if (! strcmp (swt + 1, "Tdata"))
{
data_start = parse (arg, "%x", "invalid argument to -Tdata");
Tdata_flag_specified = 1;
--- 1138,1144 -----
T_flag_specified = 1;
return;
}
! if (! strncmp (swt + 1, "Tdata",5))
{
if (swt[6] == 0)
data_start = parse (arg, "%x", "invalid argument to -Tdata");
***************
*** 1136,1142
}
if (! strcmp (swt + 1, "Tdata"))
{
! data_start = parse (arg, "%x", "invalid argument to -Tdata");
Tdata_flag_specified = 1;
return;
}
--- 1140,1149 -----
}
if (! strncmp (swt + 1, "Tdata",5))
{
! if (swt[6] == 0)
! data_start = parse (arg, "%x", "invalid argument to -Tdata");
! else
! data_start = parse (swt+6, "%x", "invalid argument to -Tdata");
Tdata_flag_specified = 1;
return;
}
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