Compare commits

...

9 Commits

Author SHA1 Message Date
b951abd511
Update Discord invitation link
All checks were successful
Builds / XTChain (push) Successful in 54m0s
2024-06-15 22:35:59 +02:00
2171eaeed6
Fix incompatible pointer type error
All checks were successful
Builds / XTChain (push) Successful in 54m44s
2024-06-07 08:28:40 +02:00
7075a9ad58
Update LLVM to 18.1.7
Some checks failed
Builds / XTChain (push) Failing after 12s
2024-06-07 08:10:31 +02:00
9025a85bcc
Update software and get rid of binutils
All checks were successful
Builds / XTChain (push) Successful in 52m51s
2024-05-15 21:14:53 +02:00
3342b87fd0
Update LLVM to 18.1.4
All checks were successful
Builds / XTChain (push) Successful in 53m41s
2024-04-21 09:38:29 +02:00
cd4b20b701
Update LLVM to 18.1.2
All checks were successful
Builds / XTChain (push) Successful in 52m51s
2024-03-23 12:16:49 +01:00
fc120f4f33
Update LLVM to 18.1.1
All checks were successful
Builds / XTChain (push) Successful in 54m3s
2024-03-17 12:20:12 +01:00
b8d5a76ee7
Update LLVM to 18.1.0
All checks were successful
Builds / XTChain (push) Successful in 55m24s
2024-03-06 19:42:22 +01:00
009d4a3421
Update PE file subsystem together with signature
All checks were successful
Builds / XTChain (push) Successful in 1h17m23s
2024-01-18 14:35:55 +01:00
6 changed files with 66 additions and 135 deletions

View File

@ -14,8 +14,8 @@
<a href="https://github.com/sponsors/xt-sys/">
<img alt="Sponsors" src="https://img.shields.io/badge/Sponsor-%E2%9D%A4-red?logo=GitHub">
</a>
<a href="https://discord.com/invite/3zgjQDVmAe">
<img alt="Discord" src="https://img.shields.io/discord/723186294540206100?label=Chat">
<a href="https://discord.com/invite/zBzJ5qMGX7">
<img alt="Discord" src="https://img.shields.io/badge/Chat-Join%20Discord-success">
</a>
</p>

View File

@ -16,19 +16,14 @@ WRKDIR="$(pwd)"
ARCHS="aarch64 armv7 i686 x86_64"
GENERIC="generic-w64-mingw32"
# Binutils Settings
BINUTILSDIR="${SRCDIR}/binutils"
BINUTILSTAG="binutils-2_41"
BINUTILSVCS="git://sourceware.org/git/binutils-gdb.git"
# CMake Settings
CMAKEDIR="${SRCDIR}/cmake"
CMAKETAG="v3.27.6"
CMAKETAG="v3.29.3"
CMAKEVCS="https://gitlab.kitware.com/cmake/cmake.git"
# LLVM Settings
LLVMDIR="${SRCDIR}/llvm"
LLVMTAG="llvmorg-17.0.6"
LLVMTAG="llvmorg-18.1.7"
LLVMVCS="https://github.com/llvm/llvm-project.git"
# Make Settings
@ -45,12 +40,12 @@ MINGWVCS="https://github.com/mirror/mingw-w64.git"
# Ninja Settings
NINJADIR="${SRCDIR}/ninja"
NINJATAG="v1.11.1"
NINJATAG="v1.12.1"
NINJAVCS="https://github.com/ninja-build/ninja.git"
# Wine Settings
WINEDIR="${SRCDIR}/wine"
WINETAG="wine-8.17"
WINETAG="wine-9.8"
WINEVCS="git://source.winehq.org/git/wine.git"
@ -79,50 +74,6 @@ apply_patches()
fi
}
# This function compiles and installs GNU BINUTILS
binutils_build()
{
echo ">>> Building BINUTILS ..."
for ARCH in ${ARCHS}; do
[ -z ${CLEAN} ] || rm -rf ${BINUTILSDIR}/build-${ARCH}
mkdir -p ${BINUTILSDIR}/build-${ARCH}
cd ${BINUTILSDIR}/build-${ARCH}
case ${ARCH} in
"armv7")
TARGET="arm"
;;
*)
TARGET="${ARCH}"
;;
esac
../configure \
--target=${TARGET}-w64-mingw32 \
--disable-binutils \
--disable-gdb \
--disable-gprof \
--disable-ld \
--disable-multilib \
--disable-nls \
--disable-werror \
--with-zlib=yes
make -j${CORES}
cp ${BINUTILSDIR}/build-${ARCH}/gas/as-new ${BINDIR}/bin/${ARCH}-w64-mingw32-gas
done
cd ${WRKDIR}
}
# This function downloads GNU BINUTILS from VCS
binutils_fetch()
{
if [ ! -d ${BINUTILSDIR} ]; then
echo ">>> Downloading BINUTILS ..."
git clone --depth 1 --branch ${BINUTILSTAG} ${BINUTILSVCS} ${BINUTILSDIR}
cd ${BINUTILSDIR}
apply_patches ${BINUTILSDIR##*/} ${BINUTILSTAG##*-}
cd ${WRKDIR}
fi
}
# This function compiles and installs CMAKE
cmake_build()
{
@ -575,12 +526,6 @@ mingw_build_libs
# Build and install Mingw-W64 tools
mingw_build_tools
# Download Binutils
binutils_fetch
# Build and install Binutils
binutils_build
# Download Wine
wine_fetch

View File

@ -1,30 +0,0 @@
diff --git a/bfd/config.bfd b/bfd/config.bfd
index bdee53957c0..04fff6e7df4 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -407,6 +407,12 @@ case "${targ}" in
targ_selvecs="arm_pe_le_vec arm_pe_be_vec arm_pei_le_vec arm_pei_be_vec"
targ_underscore=yes
;;
+ arm-*-mingw*)
+ targ_defvec=arm_pe_le_vec
+ targ_selvecs="arm_pe_le_vec arm_pe_be_vec arm_pei_le_vec arm_pei_be_vec"
+ targ_underscore=no
+ targ_cflags="-DARM_COFF_BUGFIX"
+ ;;
arm-*-phoenix*)
targ_defvec=arm_elf32_le_vec
targ_selvecs=arm_elf32_be_vec
diff --git a/gas/configure.tgt b/gas/configure.tgt
index 3429f850d05..fa735da7ce6 100644
--- a/gas/configure.tgt
+++ b/gas/configure.tgt
@@ -164,7 +164,7 @@ case ${generic_target} in
arm-*-nto*) fmt=elf ;;
arm-wince-pe | arm-*-wince | arm*-*-mingw32ce* | arm*-*-cegcc*)
fmt=coff em=wince-pe ;;
- arm-*-pe) fmt=coff em=pe ;;
+ arm-*-pe | arm-*-mingw*) fmt=coff em=pe ;;
arm-*-fuchsia*) fmt=elf ;;
arm-*-haiku*) fmt=elf em=haiku ;;

View File

@ -2,7 +2,7 @@
* PROJECT: XTchain
* LICENSE: See COPYING.md in the top level directory
* FILE: tools/exetool.c
* DESCRIPTION: Portable Executable (PE) utility for changing subsystem
* DESCRIPTION: Portable Executable (PE) utility for changing its signature and subsystem
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
@ -91,6 +91,7 @@ int main(int argc, char *argv[])
FILE *ExeFile;
unsigned char Signature[4];
unsigned int HeaderOffset;
unsigned int ImageSignature;
unsigned short SubSystem;
PPE_SUBSYSTEM NewSubSystem;
@ -101,44 +102,6 @@ int main(int argc, char *argv[])
return 1;
}
/* Open the EXE file in binary mode */
ExeFile = fopen(argv[1], "r+b");
if(ExeFile == NULL)
{
/* Failed to open PE file */
printf("ERROR: Unable to open file %s\n", argv[1]);
return 1;
}
/* Verify that the input file has a valid DOS header */
fread(Signature, sizeof(unsigned char), 4, ExeFile);
if(Signature[0] != 'M' || Signature[1] != 'Z')
{
/* Invalid DOS header */
printf("ERROR: %s is not a valid EXE file\n", argv[1]);
fclose(ExeFile);
return 1;
}
/* Verify that the input file has a valid PE header */
fseek(ExeFile, 0x3C, SEEK_SET);
fread(&HeaderOffset, sizeof(unsigned int), 1, ExeFile);
fseek(ExeFile, HeaderOffset, SEEK_SET);
fread(Signature, sizeof(unsigned char), 4, ExeFile);
if(Signature[0] != 'P' || Signature[1] != 'E' || Signature[2] != 0 || Signature[3] != 0)
{
/* Invalid PE header */
printf("Error: %s is not a valid PE file\n", argv[1]);
fclose(ExeFile);
return 1;
}
/* Seek to the offset of the SubSystem field in the optional header */
fseek(ExeFile, HeaderOffset + 0x5C, SEEK_SET);
/* Read the current SubSystem value */
fread(&SubSystem, sizeof(unsigned short), 1, ExeFile);
/* Parse the new SubSystem value from the command line argument */
NewSubSystem = getSubSystem(argv[2]);
if(NewSubSystem->Identifier == 0)
@ -148,7 +111,60 @@ int main(int argc, char *argv[])
return 1;
}
/* Print new SubSystem identifier */
/* Open the EXE file in binary mode */
ExeFile = fopen(argv[1], "r+b");
if(ExeFile == NULL)
{
/* Failed to open PE file */
printf("ERROR: Unable to open file %s\n", argv[1]);
return 2;
}
/* Verify that the input file has a valid DOS header */
fread(Signature, sizeof(unsigned char), 4, ExeFile);
if(Signature[0] != 'M' || Signature[1] != 'Z')
{
/* Invalid DOS header */
printf("ERROR: %s is not a valid EXE file\n", argv[1]);
fclose(ExeFile);
return 3;
}
/* Verify that the input file has a valid PE header */
fseek(ExeFile, 0x3C, SEEK_SET);
fread(&HeaderOffset, sizeof(unsigned int), 1, ExeFile);
fseek(ExeFile, HeaderOffset, SEEK_SET);
fread(Signature, sizeof(unsigned char), 4, ExeFile);
if((Signature[0] != 'P' || Signature[1] != 'E' || Signature[2] != 0 || Signature[3] != 0) &&
(Signature[0] != 'P' || Signature[1] != 'E' || Signature[2] != 'X' || Signature[3] != 'T'))
{
/* Invalid PE header */
printf("Error: %s is not a valid PE file\n", argv[1]);
fclose(ExeFile);
return 3;
}
/* Check if setting XT subsystem */
if(NewSubSystem->Identifier >= 0x14 && NewSubSystem->Identifier <= 0x19)
{
/* Write PEXT signature */
ImageSignature = 0x54584550;
}
else
{
/* Write PE00 signature */
ImageSignature = 0x00004550;
}
/* Seek back to header offset and write new signature */
fseek(ExeFile, HeaderOffset, SEEK_SET);
fwrite(&ImageSignature, sizeof(ImageSignature), 1, ExeFile);
/* Seek to the offset of the SubSystem field in the optional header */
fseek(ExeFile, HeaderOffset + 0x5C, SEEK_SET);
/* Read the current SubSystem value */
fread(&SubSystem, sizeof(unsigned short), 1, ExeFile);
/* Seek back to the SubSystem field in the optional header */
fseek(ExeFile, -sizeof(unsigned short), SEEK_CUR);
@ -160,7 +176,7 @@ int main(int argc, char *argv[])
fclose(ExeFile);
/* Finished successfully */
printf("PE SubSystem modified: 0x%04X <%s> to 0x%04X <%s>\n",
printf("PE SubSystem modified: 0x%02X <%s> to 0x%02X <%s>\n",
SubSystem, getSubSystemName(SubSystem), NewSubSystem->Identifier, NewSubSystem->Name);
return 0;
}

View File

@ -169,9 +169,9 @@ void check_num_args(int arg,
int main(int argc,
char* argv[])
{
const char *dir;
const char *basename;
const char *target;
char *dir;
char *basename;
char *target;
split_argv(argv[0], &dir, &basename, &target, NULL);