clang mangling some static struct names?
Roman Divacky
rdivacky at freebsd.org
Fri Nov 16 21:49:21 UTC 2012
Yes, it does that. iirc so that you can have things like
void foo(int cond) {
if (cond) {
static int i = 7;
} else {
static int i = 8;
}
}
working correctly.
I dont know why scsi_low_statics is there multiple times.
On Fri, Nov 16, 2012 at 12:36:13PM -0800, Navdeep Parhar wrote:
> On a very recent clang-built HEAD, I see that some static structures
> have a ".n" appended to their name. For example, this declaration in
> the cxgbe driver now results in a t4_list.0 symbol in the KLD:
>
> static SLIST_HEAD(, adapter) t4_list;
>
> # nm if_cxgbe.ko | grep t4_list
> 0000000000000020 b t4_list.0
>
> gcc used to leave it as t4_list. One problem is that kgdb can't display
> such an item (it interprets the dot as a delimiter between a structure
> and its element). Some of the structures listed at the end look strange
> for other reasons too -- for example, why should there be multiple
> scsi_low_statics.n symbols when there's only one such structure in
> scsi_low.c?
>
> Regards,
> Navdeep
>
>
> full list of affected structures (and some false positives?):
> # nm kernel *.ko | grep '\.[0-9]$'
> ffffffff814802d0 b accept_filtlsthd.0
> ffffffff8125ca88 b acpi_intr_list.0
> ffffffff81292278 b cdevsw_gt_post_list.0
> ffffffff812defc8 b clock_adj.0
> ffffffff812defd0 b clock_adj.1
> ffffffff814d7ac0 b enumerators.0
> ffffffff81292460 b eventtimers.0
> ffffffff81279680 b feedertab.0
> ffffffff81248470 d intr_cpus.0.0
> ffffffff814a0378 b keyboard_drivers.0
> ffffffff81481c60 b lltables.0
> ffffffff814a17a8 b profperiod.1
> ffffffff81482280 b route_cb.0
> ffffffff81482284 b route_cb.1
> ffffffff81482288 b route_cb.2
> ffffffff8148228c b route_cb.3
> ffffffff812796d0 b sndstat_devlist.0
> ffffffff814a17a0 b statperiod.1
> ffffffff812925a4 b tstate.0
> ffffffff812925a8 b tstate.1
> ffffffff8128ab30 b twe_check_bits.lastwarn.0
> ffffffff8128ab38 b twe_check_bits.lastwarn.1
> ffffffff814804d8 b unp_defers.0
> ffffffff81488760 b vm_phys_lookup_lists.0
> ffffffff813e7900 b w_hash.0
> ffffffff813e80dc b w_hash.2
> ffffffff813e58f0 b w_lohash.0
> ffffffff813e78dc b w_lohash.2
> 0000000000000318 d proto_reg.0
> 000000000000031c d proto_reg.1
> 00000000000000c0 b fasttrap_procs.0
> 00000000000000c8 b fasttrap_procs.1
> 00000000000000d0 b fasttrap_procs.2
> 0000000000000080 b fasttrap_provs.0
> 0000000000000088 b fasttrap_provs.1
> 0000000000000090 b fasttrap_provs.2
> 0000000000000028 b t3_list.0
> 0000000000000050 b t3_uld_list.0
> 0000000000000020 b t4_list.0
> 0000000000000048 b t4_uld_list.0
> 0000000000000000 b efdev.0
> 0000000000000190 b Counter.0
> 0000000000000194 b Counter.1
> 0000000000000198 b Counter.2
> 000000000000019c b Counter.3
> 0000000000000028 b taphead.0
> 0000000000001190 b svc_rpc_gss_callbacks.0
> 0000000000001198 b svc_rpc_gss_svc_names.0
> 0000000000000038 b scsi_low_statics.0
> 000000000000003c b scsi_low_statics.1
> 0000000000000040 b scsi_low_statics.2
> 0000000000000044 b scsi_low_statics.3
> 0000000000000048 b scsi_low_statics.4
> 0000000000000008 b feedertab.0
> 0000000000000098 b sndstat_devlist.0
> 0000000000000008 b pcx_info.0
> 000000000000000c b pcx_info.1
> 0000000000000010 b pcx_info.2
> 0000000000000014 b pcx_info.3
> 0000000000000018 b pcx_info.4
> 000000000000001c b pcx_info.5
> 0000000000000020 b pcx_info.6
> 0000000000000028 b pcx_info.7
> 0000000000000000 b twe_check_bits.lastwarn.0
> 0000000000000008 b twe_check_bits.lastwarn.1
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
More information about the freebsd-hackers
mailing list