#!/bin/bash

# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

check_compiler_flags()
{
  local binary="$1"
  local flags=false
  local fortify=true
  local stack=true
  ${readelf} -p .GCC.command.line "${binary}" | \
  {
    while read flag ; do
      flags=true
      case "${flag}" in
        *"-U_FORTIFY_SOURCE"*)
          fortify=false
          ;;
        *"-fno-stack-protector"*)
          stack=false
          ;;
      esac
    done
    if ! ${flags}; then
      echo "File not built with -frecord-gcc-switches: ${binary}"
      return
    fi
    ${fortify} || echo "File not built with -D_FORTIFY_SOURCE: ${binary}"
    ${stack} || echo "File not built with -fstack-protector: ${binary}"
  }
}

check_linker_flags()
{
  local binary="$1"
  local pie=false
  local relro=false
  local now=false
  local gold=false
  ${readelf} -dlSW "${binary}" | \
  {
    while read line ; do
      case "${line}" in
        *".note.gnu.gold-version"*)
          gold=true
          ;;
        *"Shared object file"*)
          pie=true
          ;;
        *"GNU_RELRO"*)
          relro=true
          ;;
        *"BIND_NOW"*)
          now=true
          ;;
      esac
    done

    ${pie} || echo "File not PIE: ${binary}"
    ${relro} || echo "File not built with -Wl,-z,relro: ${binary}"
    ${now} || echo "File not built with -Wl,-z,now: ${binary}"
    ${gold} || echo "File not built with gold: ${binary}"
  }
}

check_binaries()
{
  local CTARGET="${CTARGET:-${CHOST}}"
  local readelf="${CTARGET}-readelf"
  local binary
  scanelf -y -B -F '%F' -R "${D}" | \
    while read binary ; do
      case "${binary}" in
        *.ko)
          ;;
        ${D}usr/lib/debug/*)
          ;;
        *)
          check_compiler_flags "${binary}"
          check_linker_flags "${binary}"
          ;;
      esac
    done
}

check_binaries
