Hi Cyril,

Unfortunately, there's no simple work around other than hacking it up to
incur a shorter function name. Please file a bug and we'll try to get that
resolved.

Adam

On Wed, Aug 06, 2008 at 11:00:11PM +0300, Cyril Plisko wrote:
> Hi !
> 
> while working with customer on TNF to DTrace conversion I hit an
> interesting problem:
> 
> It appears that if USDT probe is placed in the function with long name
> (more than 128 chars) dtrace -G chops the names to 128 chars in the
> resulting objects. The linker then fails to link the executable (quite
> expectedly).
> For C application I'd say someone who uses function names that long
> just deserves that. However, with C++ the mangling easily can grow the
> function name to be quite long.
> 
> Here is how it looks:
> 
> hellride:/export/dev/dte> make CCC=/opt/SUNWspro.12/bin/CC
> /opt/SUNWspro.12/bin/CC -m64 -g   -c  dtea.cc
> dtrace -C -G -64 -s dte_probes.d dtea.o
> /opt/SUNWspro.12/bin/CC -m64 -o dte dtea.o dte_probes.o
> Undefined                     first referenced
>  symbol                           in file
> __1cMprocess_data6FpkCLnZsomewhat_long_class_name1_nZsomewhat_long_class_name2_nZsomewhat_long_class_name3_nZsomewhat_long_clas
> dte_probes.o
> ld: fatal: Symbol referencing errors. No output written to dte
> *** Error code 1
> make: Fatal error: Command failed for target `dte'
> 
> 
> Is there any easy workaround ? I mean beyond finding[1] the offending
> definition and recompiling libdtrace with larger buffer.
> Shouldn't dtrace employ same logic linker uses to process object files ?
> 
> [1] Is it this place ?
> http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libdtrace/common/dt_parser.h#172
> 
> 
> -- 
> Regards,
>  Cyril
> _______________________________________________
> dtrace-discuss mailing list
> [email protected]

-- 
Adam Leventhal, Fishworks                     http://blogs.sun.com/ahl
_______________________________________________
dtrace-discuss mailing list
[email protected]

Reply via email to