mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 119740: allow to specify only a subset of shared objects that we want symbols to be loaded for. Use soname instead of shared library name.
This commit is contained in:
parent
dae81c31ec
commit
39e1b6c5d3
2 changed files with 42 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2006-04-11 Mikhail Khodjaiants
|
||||||
|
Bug 119740: allow to specify only a subset of shared objects that we want symbols to be loaded for.
|
||||||
|
Use soname instead of shared library name.
|
||||||
|
* SolibSearchPathBlock.java
|
||||||
|
|
||||||
2006-04-10 Mikhail Khodjaiants
|
2006-04-10 Mikhail Khodjaiants
|
||||||
Bug 119740: allow to specify only a subset of shared objects that we want symbols to be loaded for.
|
Bug 119740: allow to specify only a subset of shared objects that we want symbols to be loaded for.
|
||||||
* MANIFEST.MF
|
* MANIFEST.MF
|
||||||
|
|
|
@ -489,8 +489,9 @@ public class SolibSearchPathBlock extends Observable implements IMILaunchConfigu
|
||||||
throw new InterruptedException();
|
throw new InterruptedException();
|
||||||
}
|
}
|
||||||
monitor.subTask( all[j].getPath() );
|
monitor.subTask( all[j].getPath() );
|
||||||
if ( isSharedLibrary( all[j] ) ) {
|
String libName = getSharedLibraryName( all[j] );
|
||||||
libs.add( all[j] );
|
if ( libName != null ) {
|
||||||
|
libs.add( new File( libName ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -509,6 +510,40 @@ public class SolibSearchPathBlock extends Observable implements IMILaunchConfigu
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected String getSharedLibraryName( File file ) {
|
||||||
|
if ( !file.isFile() )
|
||||||
|
return null;
|
||||||
|
IProject project = getProject();
|
||||||
|
if ( project != null ) {
|
||||||
|
IPath fullPath = new Path( file.getPath() );
|
||||||
|
try {
|
||||||
|
ICExtensionReference[] binaryParsersExt = CCorePlugin.getDefault().getBinaryParserExtensions( project );
|
||||||
|
for( int i = 0; i < binaryParsersExt.length; i++ ) {
|
||||||
|
IBinaryParser parser = (IBinaryParser)binaryParsersExt[i].createExtension();
|
||||||
|
try {
|
||||||
|
IBinaryFile bin = parser.getBinary( fullPath );
|
||||||
|
if ( bin instanceof IBinaryShared ) {
|
||||||
|
String soname = ((IBinaryShared)bin).getSoName();
|
||||||
|
return ( soname.length() != 0 ) ? soname : file.getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch( IOException e ) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch( CoreException e ) {
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// no project: for now
|
||||||
|
IPath path = new Path( file.getPath() );
|
||||||
|
String name = path.lastSegment();
|
||||||
|
String extension = path.getFileExtension();
|
||||||
|
if ( extension != null && (extension.compareTo( "so" ) == 0 || extension.compareToIgnoreCase( "dll" ) == 0) ) //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
return name;
|
||||||
|
return ( name.indexOf( ".so." ) >= 0 ) ? name : null; //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
|
||||||
protected boolean isSharedLibrary( File file ) {
|
protected boolean isSharedLibrary( File file ) {
|
||||||
if ( !file.isFile() )
|
if ( !file.isFile() )
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue