]> git.sesse.net Git - vlc/commitdiff
Win32: use ld options rather than a perl script to set PE flags
authorRafaël Carré <funman@videolan.org>
Sat, 18 May 2013 11:05:17 +0000 (13:05 +0200)
committerRafaël Carré <funman@videolan.org>
Sat, 18 May 2013 11:08:29 +0000 (13:08 +0200)
Makefile.am
configure.ac
extras/package/win32/package.mak
extras/package/win32/peflags.pl [deleted file]

index ff0f1f575ba72825a4356004d9d81b8352a3728a..b9d59d1a38ac32b66ccdcdc878ab9af24aa85853 100644 (file)
@@ -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 \
index 567b01ad12c6a2d2fd8fbb8ae062e4aa3d991bec..4a2b7f9f2f89728de2fdae964586c4f08b7df885 100644 (file)
@@ -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])
index 8710e6f49e4c212aa2d0b614433740bb62ed25ef..796f30f39c2d02983730553d5f40d1a14b495735 100644 (file)
@@ -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 (executable)
index 62ae010..0000000
+++ /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;
-}