From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17470 invoked by alias); 19 Sep 2011 07:03:51 -0000 Received: (qmail 17457 invoked by uid 22791); 19 Sep 2011 07:03:49 -0000 X-SWARE-Spam-Status: No, hits=-0.8 required=5.0 tests=AWL,BAYES_20,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from feith1.FEITH.COM (HELO feith1.FEITH.COM) (192.251.93.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 19 Sep 2011 07:03:36 +0000 Received: from jwlab.FEITH.COM (jwlab.FEITH.COM [192.251.93.16]) by feith1.FEITH.COM (8.14.4+Sun/8.12.9) with ESMTP id p8J73ZCn003404 for ; Mon, 19 Sep 2011 03:03:35 -0400 (EDT) (envelope-from john@jwlab.FEITH.COM) Received: from jwlab.FEITH.COM (localhost [127.0.0.1]) by jwlab.FEITH.COM (8.14.4+Sun/8.14.4) with ESMTP id p8J73ZL4009317 for ; Mon, 19 Sep 2011 03:03:35 -0400 (EDT) Received: (from john@localhost) by jwlab.FEITH.COM (8.14.4+Sun/8.14.4/Submit) id p8J73ZPj009316 for sid@sources.redhat.com; Mon, 19 Sep 2011 03:03:35 -0400 (EDT) Date: Mon, 19 Sep 2011 07:03:00 -0000 From: John Wehle Message-Id: <201109190703.p8J73ZPj009316@jwlab.FEITH.COM> To: sid@sources.redhat.com Subject: sid-20110801 Patch to implement gloss SYS_stat MIME-Version: 1.0 Content-Type: text/plain X-DCC-Misty-Metrics: feith1; whitelist Mailing-List: contact sid-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: sid-owner@sourceware.org X-SW-Source: 2011-q3/txt/msg00004.txt.bz2 Currently sid lacks support for SYS_stat. The enclosed patch has been tested on FreeBSD with sid configured for tomi Borealis (a processor under development by Venray Technology). ChangeLog: Mon Sep 19 01:20:11 EDT 2011 John Wehle (john@feith.com) * component/gloss/gloss.cxx (do_sys_stat): New method based on code shamelessly stolen from do_sys_fstat. * component/gloss/gloss.h (do_sys_stat): New method of gloss32. -- John ------------------------8<------------------------------8<--------------- --- component/gloss/gloss.cxx.ORIGINAL 2011-09-19 00:56:13.000000000 -0400 +++ component/gloss/gloss.cxx 2011-09-18 03:28:49.000000000 -0400 @@ -925,6 +925,9 @@ case libgloss::SYS_fstat: do_sys_fstat(); break; + case libgloss::SYS_stat: + do_sys_stat(); + break; case libgloss::SYS_close: do_sys_close(); break; @@ -1317,6 +1320,56 @@ } void +gloss32::do_sys_stat() +{ + string filename; + struct stat st; + int32 str_ptr, ptr; + + get_int_argument (1, str_ptr); + get_int_argument (2, ptr); + + if (verbose_p) + cerr << "*** stat (" << str_ptr << "," << ptr << ")" << endl; + + if (!get_string (str_ptr, filename)) + { + set_error_result (newlib::eFault); + set_int_result (-1); + return; + } + + int rc = ::stat (filename.c_str (), &st); + if (rc < 0) + { + set_host_error_result (errno); + set_int_result (-1); + } + else + { + set_error_result (0); + set_int_result (rc); + } + + // Populate struct stat in target memory. + set_halfword (ptr, st.st_dev); + ptr += 2; + set_halfword (ptr, st.st_ino); + ptr += 2; + set_word (ptr, st.st_mode); + ptr += 4; + set_halfword (ptr, st.st_nlink); + ptr += 2; + set_halfword (ptr, st.st_uid); + ptr += 2; + set_halfword (ptr, st.st_gid); + ptr += 2; + set_halfword (ptr, st.st_rdev); + ptr += 2; + set_word (ptr, st.st_size); +} + +void gloss32::do_sys_read() { int32 handle, str_ptr, str_length; --- component/gloss/gloss.h.ORIGINAL 2011-09-19 00:56:13.000000000 -0400 +++ component/gloss/gloss.h 2011-09-18 00:51:30.000000000 -0400 @@ -174,6 +174,7 @@ void do_sys_close(); void do_sys_lseek(); void do_sys_fstat(); + void do_sys_stat(); void do_sys_time(); void do_sys_gettimeofday(); void do_sys_times(); -------------------------------------------------------------------------