This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]