[vlc-commits] Win32: use ld options rather than a perl script to set PE flags
Rafaël Carré
git at videolan.org
Sat May 18 13:10:14 CEST 2013
vlc | branch: master | Rafaël Carré <funman at videolan.org> | Sat May 18 13:05:17 2013 +0200| [a42bb441656b14f088b61d7f86a77a3412f6d792] | committer: Rafaël Carré
Win32: use ld options rather than a perl script to set PE flags
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a42bb441656b14f088b61d7f86a77a3412f6d792
---
Makefile.am | 1 -
configure.ac | 3 ++
extras/package/win32/package.mak | 3 --
extras/package/win32/peflags.pl | 72 --------------------------------------
4 files changed, 3 insertions(+), 76 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index ff0f1f5..b9d59d1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -16,7 +16,6 @@ SUBDIRS += test
EXTRA_DIST = \
extras/package/win32/vlc.exe.manifest \
extras/package/win32/libvlc.dll.manifest \
- extras/package/win32/peflags.pl \
extras/package/win32/change-contribs-directory.sh \
extras/package/win32/configure.sh \
extras/package/symbian/configure.sh \
diff --git a/configure.ac b/configure.ac
index 567b01a..4a2b7f9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -227,6 +227,9 @@ case "${host_os}" in
esac
if test "${SYS}" = "mingw32"; then
+ # DEP, ASLR, NO SEH
+ LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase"
+
VLC_ADD_LIBS([libvlccore],[-lwinmm])
VLC_ADD_LDFLAGS([vlc],[-mwindows])
VLC_ADD_LIBS([win32text],[-lgdi32])
diff --git a/extras/package/win32/package.mak b/extras/package/win32/package.mak
index 8710e6f..796f30f 100644
--- a/extras/package/win32/package.mak
+++ b/extras/package/win32/package.mak
@@ -85,9 +85,6 @@ endif
# Convert to DOS line endings
find $(win32_destdir) -type f \( -name "*xml" -or -name "*html" -or -name '*js' -or -name '*css' -or -name '*hosts' -or -iname '*txt' -or -name '*.cfg' -or -name '*.lua' \) -exec $(U2D) {} \;
-# Enable DEP and ASLR for all the binaries
- find $(win32_destdir) -type f \( -name '*$(LIBEXT)' -print -o -name '*$(EXEEXT)' -print \) -exec $(top_srcdir)/extras/package/win32/peflags.pl {} \;
-
# Remove cruft
find $(win32_destdir)/plugins/ -type f \( -name '*.a' -or -name '*.la' \) -exec rm -rvf {} \;
diff --git a/extras/package/win32/peflags.pl b/extras/package/win32/peflags.pl
deleted file mode 100755
index 62ae010..0000000
--- a/extras/package/win32/peflags.pl
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/perl
-# Copyright © 2011 Rafaël Carré <funman at videolanorg>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
-#
-
-use warnings;
-
-if ($#ARGV < 0 || $#ARGV > 1 || ($#ARGV == 1 && $ARGV[0] ne "-AppContainer")) {
- die "Usage: peflags.pl [-AppContainer] file";
-}
-my $appContainer = 0;
-my $file = $ARGV[0];
-if ($#ARGV == 1 && ($ARGV[0] eq "-AppContainer")) {
- $appContainer = 1;
- $file = $ARGV[1];
-}
-
-open F, "+<$file"
- or die "Can't open `$file'";
-binmode F;
-
-seek F, 0x3c, 0;
-my $offset = get_le(4);
-seek F, $offset, 0;
-
-if (get_le(4) != 0x00004550) { # IMAGE_NT_SIGNATURE
- die "Not a NT executable";
-}
-
-seek F, 20 + 70, 1;
-
-my $flags = get_le(2);
-seek F, -2, 1;
-
-$flags |= 0x40; # Dynamic Base
-$flags |= 0x100; # NX Compat
-$flags |= 0x400; # NO SEH
-if ($appContainer) {
- $flags |= 0x1000; # App Container
-}
-
-printf F "%c%c", $flags & 0xff,($flags >> 8) & 0xff;
-
-close F;
-
-sub get_le {
- my $bytes;
- read F, $bytes, $_[0];
- if (length $bytes ne $_[0]) {
- die "Couldn't read";
- }
-
- my $ret = 0;
- my @array = split //, $bytes;
- for (my $shift = 0, my $i = 0; $i < $_[0]; $i++, $shift += 8) {
- $ret += (ord $array[$i]) << $shift;
- }
- return $ret;
-}
More information about the vlc-commits
mailing list