[petsc-dev] Reminder: *every* symbol with extern linkage *must* be namespaced

Mark F. Adams mark.adams at columbia.edu
Sat Mar 17 10:17:47 CDT 2012


What does namespaced mean exactly?

On Mar 17, 2012, at 10:58 AM, Jed Brown wrote:

> Every symbol (both functions and data) with extern linkage must be namespaced to avoid link- or run-time conflicts when the user (or any other library to be used in the same application) defines their own variable called "rankkey" or "actions" or "objects" or "ListCreate" or "createLevel", etc. No exceptions.
> 
> Either use static linkage or namespace the symbols. Some old code was sloppy about this (and needs to be fixed), but we really need to be careful to never do this is new code.
> 
> You can build a libpetsc.a (--with-shared-libraries=0) and search for any defined symbols (T, B, R, C, D) that are not namespaced. Some examples below.
> 
> pthread.c:
> 00000000000004c5 T DoCoreAffinity
> 0000000000000232 T FuncFinish
> 0000000000000010 B MainThreadCoreAffinity
> 0000000000000100 R ThreadAffinityPolicyTypes
> 0000000000000008 B ThreadCoreAffinity
> 0000000000000060 R ThreadSynchronizationTypes
> 0000000000000004 C rankkey
> 0000000000000018 B threadranks
> 
> plog.c:
> 0000000000000000 B actions
> 0000000000000010 B logActions
> 0000000000000014 B logObjects
> 0000000000000038 D maxActions
> 000000000000003c D maxObjects
> 0000000000000018 B numActions
> 000000000000001c B numObjects
> 0000000000000020 B numObjectsDestroyed
> 0000000000000008 B objects
> 0000000000000040 D traceblanks
> 00000000000000d8 B tracefile
> 00000000000000e0 B tracelevel
> 0000000000000060 D tracespace
> 00000000000000e8 B tracetime
> 
> ctetgen.c:
> 000000000000ade7 T ArrayPoolCreate
> 000000000000b979 T ArrayPoolDestroy
> 000000000000b0cf T ArrayPoolGetBlock
> 000000000000b6f7 T ArrayPoolNewIndex
> 000000000000ac41 T ArrayPoolRestart
> 0000000000006cfe T ListAppend
> 00000000000082ec T ListClear
> 00000000000069c7 T ListCreate
> 00000000000077ad T ListDelete
> 0000000000008491 T ListDestroy
> 0000000000007ae2 T ListHasItem
> 000000000000718e T ListInsert
> 0000000000007ea0 T ListItem
> 0000000000007cf5 T ListLength
> 00000000000080c6 T ListSetItem
> 00000000000096af T MemoryPoolAlloc
> 000000000000a415 T MemoryPoolCreate
> 0000000000009a9d T MemoryPoolDealloc
> 000000000000a827 T MemoryPoolDestroy
> 000000000000a1ed T MemoryPoolRestart
> 0000000000009c6a T MemoryPoolTraversalInit
> 0000000000009e6e T MemoryPoolTraverse
> 0000000000008868 T QueueCreate
> 0000000000009324 T QueueDestroy
> 0000000000008c23 T QueueLength
> 00000000000090b0 T QueuePop
> 0000000000008dd5 T QueuePush
> 0000000000003f06 T lu_decmp
> 0000000000004303 T lu_solve
> 
> gamg.c/agg.c/geo.c/tools.c:
> 0000000000000926 T createLevel
> 0000000000000050 C gamg_setup_events
> 00000000000054c6 T formProl0
> 0000000000002989 T smoothAggs
> 0000000000000629 T geo_mg_compare
> 00000000000012f0 T getGIDsOnSquareGraph
> 0000000000001292 T triangulateAndFormProl
> 0000000000000629 T createSimpleGraph
> 00000000000028fe T getDataWithGhosts
> 0000000000001415 T scaleFilterGrap

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120317/b875acac/attachment.html>


More information about the petsc-dev mailing list