[llvm-bugs] [Bug 24648] New: -fvisibility=hidden and -fvisibility-inlines-hidden being ignored

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Sep 1 04:34:28 PDT 2015


https://llvm.org/bugs/show_bug.cgi?id=24648

            Bug ID: 24648
           Summary: -fvisibility=hidden and -fvisibility-inlines-hidden
                    being ignored
           Product: new-bugs
           Version: 3.6
          Hardware: Other
                OS: other
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: dx-mon at users.sourceforge.net
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

Created attachment 14802
  --> https://llvm.org/bugs/attachment.cgi?id=14802&action=edit
Files required to reproduce bug

If more than one compilation unit defines a structure (but not function) for
internal-only consumption to that unit - and the units use the same name for
the struct - the visibility options given for the unit are being ignored. The
structures will both be visible in the resulting object file for the linker.

When passed to the linker, as a result, only the first unit's copy of the
structure will be used in all function calls relating to that structure
assuming identical struct APIs. I can only hate to think what would happen if
an extra function were present in one struct but not the other as to how
confusing this bug would then become.

Expected result of attached test-case:
.0:3636363636363636:.1:3636363636363636:.2:3636363636363636:.3:3636363636363636:.4:3636363636363636:.5:3636363636363636:.6:3636363636363636:.7:3636363636363636:.8:3636363636363636:.9:3636363636363636:.10:3636363636363636:.11:3636363636363636:.12:3636363636363636:.13:3636363636363636:.14:3636363636363636:.15:3636363636363636:.16:115D5D5D5D5D5D5C:.17:115D5D5D5D5D5D5C:.18:BAB1CB61E1E1E1EB:.19:BAB1CB61E1E1E1EB:.20:850799225F926293:.21:850799225F926293:.22:002855843476C491:.23:DB4F7CAB5B9DEBB7:.24:4EA502478EAC4DE7:.25:8289669AF76D9AC5:.26:1BD7B2BB2469893A:.27:8D98B1B6D36C18B4:.28:D874990310946583:.29:51854BBF0209EBB3:.30:8B3C5594EED682C8:.31:8992A4AD535C67DB:.32:741B59D84DD212FF:.33:271466D04FD59E95:.34:6337022C6CBDA380:.35:6F20EC9AEEE97A85:.36:D2DE6A28DEE03D4E:.37:79438B74E6340A7C:.38:77975CB77134F1B2:.39:DAA31F4B4C8BEFE7:.40:9ECF883A732718BC:.41:C91697C4EE07F55B:.42:95647C8A4809D414:.43:84058A64F1470D3C:.44:00DD35881DCB2ED9:.45:18BBEC39E6490440:.46:E7655329025DA3BE:.47:53293B56BD193AB7:
 .48:D0D5D248AF960575:.49:2D0B4FA87021F0C0:.50:5EA123211A939DD2:.51:ED0CCFA96C01F804:.52:B38E2DDB27EC1E65:.53:3ECECA30A5E5BE4C:.54:F372E2B24022BFD5:.55:DF82738DA8254AF7:.56:5A4BA8B3B1BE3882:.57:DCF8BBF9FD73FB34:.58:16243856BFDD6668:.59:2CD45C99CB0C1FA4:.60:A9D48A719FDDD773:.61:BEAF0574D573EF8E:.62:DC37223CF9AEA404:.63:D403BBC395775553:.64:BB0A9F31485EA09D:.65:8ACAA568F0FCD6DC:.66:0DD256D7078712E4:.67:229A6F427B066627:.68:525AE7EF2B796B72:.69:2150CAEA329D023B:.70:A0087C75D4203B1C:.71:F49C8BAF2210ED1E:.72:45CFF8AC11595B82:.73:088974F8E6A4B1B7:.74:EEF6AC7E505923D8:.75:F79EE0354BF41C80:.76:EC2F6DAF7848EDE8:.77:06F0AF3C39FB69A3:.78:08C854623BD76871:.79:B5C6E02CC9A38C05

Actual result:
0:0000000036363636:1:0000000036363636:2:0000000036363636:3:0000000036363636:4:0000000036363636:5:0000000036363636:6:0000000036363636:7:0000000036363636:8:0000000036363636:9:0000000036363636:10:0000000036363636:11:0000000036363636:12:0000000036363636:13:0000000036363636:14:0000000036363636:15:0000000036363636:16:000000003163E3E3:17:000000003163E3E3:18:00000000E11539F8:19:00000000E11539F8:20:000000008F8EBD79:21:000000008F8EBD79:22:00000000DCC3A92C:23:00000000D7F156D9:24:00000000F0460653:25:000000007FF4C4A8:26:00000000C2522EFF:27:00000000A7CAE80B:28:00000000FF7CA8BE:29:00000000234E5C2F:30:00000000B6C633B1:31:0000000044CD5AC5:32:00000000C9927CA5:33:000000009D800194:34:000000009E731070:35:000000002F22495C:36:00000000EA9F8311:37:000000005C4E1158:38:0000000050493177:39:00000000A490BA7F:40:00000000BA72C729:41:00000000D531E922:42:00000000E6881044:43:00000000A429BAF9:44:000000003302A795:45:0000000056FBA245:46:00000000372D4E56:47:000000007247FA41:48:00000000E89EA338:49:00000000BD6ABC1F:50:00000
 000F84B20CE:51:000000004A0B1A6B:52:0000000075432054:53:000000002ADA0E8E:54:000000007C13EF98:55:00000000C9BC9863:56:000000002742A472:57:000000003D9A2849:58:00000000C0C4BFAF:59:00000000F072D8BE:60:000000008ED2B62A:61:0000000003A2CAFB:62:000000008119B504:63:0000000099B97AD0:64:000000009A0BCFE4:65:000000005B0DF9CD:66:00000000A035FE3E:67:000000008AFF9548:68:000000005483F42C:69:00000000A8BFF47F:70:00000000931002E7:71:00000000B21CCF12:72:00000000A336DC68:73:00000000448A9DC0:74:00000000D716DFFB:75:000000004B8D257A:76:000000003097DBA9:77:000000004113836C:78:0000000036949B86:79:0000000018488C64

This code works correctly as expected when passed to MSVC's cl.exe, or GCC's
g++.
Reproduction of Clang results performed on a x86_64 Mac running Mac OSX as well
as a x86_64 PC running Linux. Results are identical.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20150901/b975942a/attachment-0001.html>


More information about the llvm-bugs mailing list