diff options
author | midipix <writeonce@midipix.org> | 2025-05-16 06:17:29 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2025-05-16 22:52:05 +0000 |
commit | 8a56f818d3e48a57b835278aa9b98db986dbc9cb (patch) | |
tree | 4881324e56173994b6a3d8c4d236706e768a26ad | |
parent | bf45754389c8bf5ac493393556f807175bac82ec (diff) | |
download | cbb-gcc-4.6.4-8a56f818d3e48a57b835278aa9b98db986dbc9cb.tar.bz2 cbb-gcc-4.6.4-8a56f818d3e48a57b835278aa9b98db986dbc9cb.tar.xz |
midipix targets: midipix_pe_create_got_entry(): fix visibility logic.
-rw-r--r-- | gcc/config/i386/midipix.c | 85 |
1 files changed, 44 insertions, 41 deletions
diff --git a/gcc/config/i386/midipix.c b/gcc/config/i386/midipix.c index e1d2f1bd3..3d076f3e9 100644 --- a/gcc/config/i386/midipix.c +++ b/gcc/config/i386/midipix.c @@ -136,29 +136,26 @@ static void midipix_pe_create_got_entry(FILE * stream, const char * name, tree d ? winnt_ptrsize_quad : winnt_ptrsize_long; - visibility = (decl->decl_with_vis.visibility == VISIBILITY_DEFAULT) - ? default_visibility - : decl->decl_with_vis.visibility; - - if ((visibility == VISIBILITY_PROTECTED) || (visibility == VISIBILITY_INTERNAL)) - return; - - /* dsostrs$... */ - fputs("\n",stream); - fputs(GAS_SECTION,stream); - fputs(GOTSTRS_SECTION_NAME,stream); - fputs("$",stream); - assemble_name(stream,name); - fputs(GOT_SECTION_ATTR,stream); - - /* .symstr_... */ - fputs("\n.symstr_",stream); - assemble_name(stream,name); - fputs(":\n\t",stream); - fputs(".ascii\t\"",stream); - assemble_name(stream,name); - fputs("\\0\"\n",stream); - fputs("\t.linkonce discard\n\n",stream); + visibility = decl->decl_with_vis.visibility; + + /* gotstrs$... */ + if ((visibility == VISIBILITY_DEFAULT) || (visibility == VISIBILITY_PROTECTED)) { + fputs("\n",stream); + fputs(GAS_SECTION,stream); + fputs(GOTSTRS_SECTION_NAME,stream); + fputs("$",stream); + assemble_name(stream,name); + fputs(GOT_SECTION_ATTR,stream); + + /* .symstr_... */ + fputs("\n.symstr_",stream); + assemble_name(stream,name); + fputs(":\n\t",stream); + fputs(".ascii\t\"",stream); + assemble_name(stream,name); + fputs("\\0\"\n",stream); + fputs("\t.linkonce discard\n\n",stream); + } /* dsosyms$... */ fputs("\n",stream); @@ -178,28 +175,34 @@ static void midipix_pe_create_got_entry(FILE * stream, const char * name, tree d fputs(ptrsize,stream); fputs("\t",stream); assemble_name(stream,name); - fputs("\n\t",stream); - fputs(".rva",stream); - fputs("\t.symstr_",stream); - assemble_name(stream,name); fputs("\n",stream); - fputs(TARGET_64BIT ? "\t.long\t" "0" "\n" : "",stream); - fputs("\n\n",stream); - /* default visilbity? */ - if (visibility == VISIBILITY_DEFAULT) - return; + if ((visibility == VISIBILITY_DEFAULT) || (visibility == VISIBILITY_PROTECTED)) { + fputs("\n\t",stream); + fputs(".rva",stream); + fputs("\t.symstr_",stream); + assemble_name(stream,name); + fputs("\n",stream); + } else { + fputs("\n\t.long\t" "0",stream); + fputs("\n",stream); + } - /* .symattr section */ - fputs("\n",stream); - fputs(GAS_SECTION,stream); - fputs(SYMATTR_SECTION_NAME,stream); - fputs(SYMATTR_SECTION_ATTR,stream); + fputs(TARGET_64BIT ? "\t.long\t" "0" "\n" : "",stream); + fputs("\n\n",stream); - /* .symattr.hidden. */ - fputs("\n.symattr.hidden.",stream); - assemble_name(stream,name); - fputs(":\n\n",stream); + /* .symattr section, .symattr.hidden. symbols */ + if ((visibility == VISIBILITY_HIDDEN) || (visibility == VISIBILITY_INTERNAL)) { + fputs("\n",stream); + fputs(GAS_SECTION,stream); + fputs(SYMATTR_SECTION_NAME,stream); + fputs(SYMATTR_SECTION_ATTR,stream); + + /* .symattr.hidden. */ + fputs("\n.symattr.hidden.",stream); + assemble_name(stream,name); + fputs(":\n\n",stream); + } } |