mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-11-10 06:02:09 +00:00
GP-3833: Updated binutils to version 2.41
This commit is contained in:
parent
180b09041c
commit
bdae8f73d8
@ -28,20 +28,23 @@
|
|||||||
// directory once the extension has been installed/unpacked by Ghidra. The binutils referenced
|
// directory once the extension has been installed/unpacked by Ghidra. The binutils referenced
|
||||||
// by the script below may be downloaded from the following URL:
|
// by the script below may be downloaded from the following URL:
|
||||||
//
|
//
|
||||||
// https://ftp.gnu.org/pub/gnu/binutils/binutils-2.36.tar.bz2
|
// https://ftp.gnu.org/pub/gnu/binutils/binutils-2.41.tar.bz2
|
||||||
//
|
//
|
||||||
|
|
||||||
ext.binutils = "binutils-2.36"
|
ext.binutils = "binutils-2.41"
|
||||||
ext.binutilsDistro = "${binutils}.tar.bz2"
|
ext.binutilsDistro = "${binutils}.tar.bz2"
|
||||||
|
|
||||||
// Find the GPL dir
|
// Find the GPL dir
|
||||||
def gplDir = null;
|
def gplDir = null;
|
||||||
if (file("../utils.gradle").exists()) {
|
if (file("../utils.gradle").exists()) {
|
||||||
gplDir = file("..").getCanonicalPath()
|
gplDir = file("..").getCanonicalPath()
|
||||||
|
ext.ghidraInstallDir = file("../..").getCanonicalPath()
|
||||||
|
ext.binutilsLocation = file("${ghidraInstallDir}/../ghidra.bin/GPL/${name}").getCanonicalPath()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Module lives disconnected from the GPL directory, which it will need to build.
|
// Module lives disconnected from the GPL directory, which it will need to build.
|
||||||
// Find a Ghidra installation directory and use its GPL directory.
|
// Find a Ghidra installation directory and use its GPL directory.
|
||||||
|
ext.binutilsLocation = projectDir
|
||||||
if (file("../../Extensions").exists() && file("../../../GPL/utils.gradle").exists()) {
|
if (file("../../Extensions").exists() && file("../../../GPL/utils.gradle").exists()) {
|
||||||
// Module is installed within a Ghidra installation (i.e, ghidra/Ghidra/Extensions)
|
// Module is installed within a Ghidra installation (i.e, ghidra/Ghidra/Extensions)
|
||||||
gplDir = file("../../../GPL").getCanonicalPath()
|
gplDir = file("../../../GPL").getCanonicalPath()
|
||||||
|
@ -6,7 +6,7 @@ defaultTasks 'assemble'
|
|||||||
|
|
||||||
ext.supportedPlatforms = ['mac_x86_64', 'mac_arm_64', 'linux_x86_64', 'linux_arm_64']
|
ext.supportedPlatforms = ['mac_x86_64', 'mac_arm_64', 'linux_x86_64', 'linux_arm_64']
|
||||||
|
|
||||||
ext.binutilsResource = new File("${projectDir}/${binutils}.tar.bz2")
|
ext.binutilsResource = new File("${binutilsLocation}/${binutils}.tar.bz2")
|
||||||
|
|
||||||
def binutilsUnpackDir = file("${project.buildDir}/${binutils}/")
|
def binutilsUnpackDir = file("${project.buildDir}/${binutils}/")
|
||||||
|
|
||||||
@ -37,8 +37,8 @@ model {
|
|||||||
all {
|
all {
|
||||||
def binutilsArtifactsDir = file("build/binutils/${targetPlatform.name}")
|
def binutilsArtifactsDir = file("build/binutils/${targetPlatform.name}")
|
||||||
if ((toolChain in Gcc) || (toolChain in Clang)) {
|
if ((toolChain in Gcc) || (toolChain in Clang)) {
|
||||||
cCompiler.args "-I${binutilsArtifactsDir}/include", "-I${binutilsArtifactsDir}/bfd"
|
cCompiler.args "-I${binutilsArtifactsDir}/include", "-I${binutilsArtifactsDir}/bfd", "-I${binutilsArtifactsDir}/libsframe"
|
||||||
linker.args "-L${binutilsArtifactsDir}/lib", "-lopcodes", "-lbfd", "-liberty", "-lz", "-ldl"
|
linker.args "-L${binutilsArtifactsDir}/lib", "-lopcodes", "-lbfd", "-lsframe", "-liberty", "-lz", "-ldl"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -151,9 +151,10 @@ supportedPlatforms.each { platform ->
|
|||||||
include "**/*.h"
|
include "**/*.h"
|
||||||
}
|
}
|
||||||
into("/lib") {
|
into("/lib") {
|
||||||
from "${configDir}/bfd/libbfd.a"
|
from "${configDir}/bfd/.libs/libbfd.a"
|
||||||
from "${configDir}/libiberty/libiberty.a"
|
from "${configDir}/libiberty/libiberty.a"
|
||||||
from "${configDir}/opcodes/libopcodes.a"
|
from "${configDir}/opcodes/libopcodes.a"
|
||||||
|
from "${configDir}/libsframe/.libs/libsframe.a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,8 +45,7 @@ void listSupportedArchMachTargets(void)
|
|||||||
int objdump_sprintf (SFILE *f, const char *format, ...)
|
int objdump_sprintf (SFILE *f, const char *format, ...)
|
||||||
{
|
{
|
||||||
|
|
||||||
int i;
|
int n;
|
||||||
size_t n;
|
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start (args, format);
|
va_start (args, format);
|
||||||
@ -57,6 +56,18 @@ int objdump_sprintf (SFILE *f, const char *format, ...)
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Compatibility fix for binutils v 2.39 change to INIT_DISASSEMLE_INFO signature */
|
||||||
|
int objdump_sprintf_styled(SFILE *f, enum disassembler_style style, const char *format, ...) {
|
||||||
|
int n;
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
va_start (args, format);
|
||||||
|
n = vsnprintf (f->buffer + f->pos, BUFF_SIZE, format, args);
|
||||||
|
strncat(disassembled_buffer, f->buffer, n);
|
||||||
|
va_end (args);
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
void configureDisassembleInfo(bfd* abfd,
|
void configureDisassembleInfo(bfd* abfd,
|
||||||
disassemble_info* info,
|
disassemble_info* info,
|
||||||
@ -67,7 +78,7 @@ void configureDisassembleInfo(bfd* abfd,
|
|||||||
|
|
||||||
memset(sfile.buffer, 0x00, BUFF_SIZE);
|
memset(sfile.buffer, 0x00, BUFF_SIZE);
|
||||||
|
|
||||||
INIT_DISASSEMBLE_INFO(*info, stdout, objdump_sprintf);
|
INIT_DISASSEMBLE_INFO(*info, stdout, objdump_sprintf, objdump_sprintf_styled);
|
||||||
info->arch = (enum bfd_architecture) arch;
|
info->arch = (enum bfd_architecture) arch;
|
||||||
info->mach = mach;
|
info->mach = mach;
|
||||||
info->flavour = bfd_get_flavour(abfd);
|
info->flavour = bfd_get_flavour(abfd);
|
||||||
|
Loading…
Reference in New Issue
Block a user