This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [RFH] Fixing -fsection-anchors on powerpc-darwin
On Feb 19, 2006, at 4:26 AM, Richard Sandiford wrote:
Have you thought about overriding the output_anchor hook for Darwin?
It sounds simpler than what you did in the patch, and the hook was
there specifically for cases where the ASM_OUTPUT_DEF thing wouldn't
work.
That is a good idea, thanks. Forcing ASM_OUTPUT_DEF to be defined
was wrong for Darwin anyways as more failures come in.
Right. This is handled for ELF by:
/* Don't use anchors for mergeable sections. The linker might move
the objects around. */
sect = SYMBOL_REF_BLOCK (symbol)->sect;
if (sect->common.flags & SECTION_MERGE)
return false;
in default_use_anchor_for_symbol_p. If .cstring contains mergeable
data, it sounds like you should either (a) set SECTION_MERGE for it
or (b) override use_anchor_for_symbol_p for Darwin and check whether
SYMBOL_REF_BLOCK (symbol)->sect == cstring_section.
Oh, that is how to fix the issue and it works.
Now I run into another problem:
/Users/pinskia/src/gcc/local/gcc/objdir.objc/./prev-gcc/xgcc
-B/Users/pinskia/src/gcc/local/gcc/objdir.objc/./prev-gcc/
-B/Volumes/temp/gcc/local.objc/powerpc-apple-darwin7.9.0/bin/ -c -g
-O2 -mdynamic-no-pic -DIN_GCC -W -Wall -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long
-Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition
-Wmissing-format-attribute -Werror -fno-common -DHAVE_CONFIG_H -I.
-I. -I/Users/pinskia/src/gcc/local/gcc/gcc
-I/Users/pinskia/src/gcc/local/gcc/gcc/.
-I/Users/pinskia/src/gcc/local/gcc/gcc/../include -I./../intl
-I/Users/pinskia/src/gcc/local/gcc/gcc/../libcpp/include
-I/Users/pinskia/src/gcc/local/gcc/gcc/../libdecnumber
-I../libdecnumber -I. -I. -I/Users/pinskia/src/gcc/local/gcc/gcc
-I/Users/pinskia/src/gcc/local/gcc/gcc/.
-I/Users/pinskia/src/gcc/local/gcc/gcc/../include -I./../intl
-I/Users/pinskia/src/gcc/local/gcc/gcc/../libcpp/include
-I/Users/pinskia/src/gcc/local/gcc/gcc/../libdecnumber
-I../libdecnumber
/Users/pinskia/src/gcc/local/gcc/gcc/config/host-darwin.c
/var/tmp//ccBWaqmT.s:130:Fixup of 1073745640 too large for field width
of 26 bits
/var/tmp//ccBWaqmT.s:119:Fixup of 1073745636 too large for field width
of 26 bits
/var/tmp//ccBWaqmT.s:104:Fixup of 1073745704 too large for field width
of 26 bits
/var/tmp//ccBWaqmT.s:94:Fixup of 1073745720 too large for field width
of 26 bits
/var/tmp//ccBWaqmT.s:73:Fixup of 1073745832 too large for field width
of 26 bits
/var/tmp//ccBWaqmT.s:42:Fixup of 1073745860 too large for field width
of 26 bits
Thanks,
Andrew Pinski
PS Attached is my current patch:
Attachment:
anchor.diff.txt
Description: Text document